#ifndef _STRUCTURE_INDEX
#define _STRUCTURE_INDEX

#include "structure_mot.hpp"
//#include "fonction_base.hpp"

// Contient les numeros de lignes du mot
struct list_ligne
{
  int ligne;
  list_ligne * next;
};
typedef list_ligne* chained_ligne;

// Contient les mots et leurs de numeros de ligne dapparition
struct list_index
{
  string word;
  chained_ligne ligne;
  list_index * next;
};
typedef list_index* chained_index;

// c_l est initialiser a NULL
void created_chained_ligne(chained_ligne & c_l);

// c_i est initialiser a NULL
void created_chained_index(chained_index & c_i);

// Recherche dans c_l le mot word et ajoute le numero de ligne number a c_l
void add_number_ligne(chained_index & c_l,const string & word,const int & number);

// Ajoute a c_i le mot word dans lordre alphabetique
void add_word_index(chained_index & c_i,const string & word);

// Supprime une boite dans c_l
void delete_ligne(chained_ligne & c_l);

// Supprime toutes les boites dans c_l
void delete_all_ligne(chained_ligne & c_l);

// Supprime une boite dans c_i
void delete_index(chained_index & c_i);

// Supprime toutes les boites dans c_i
void delete_all_index(chained_index & c_i);

// Affiche la structure index
void affiche_index(const chained_index & c_i);

// Affiche la structure ligne
void affiche_ligne(const chained_ligne & c_l);

#endif
